热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

字形|都会_CSS字体加密反反爬通用方法

篇首语:本文由编程笔记#小编为大家整理,主要介绍了CSS字体加密反反爬通用方法相关的知识,希望对你有一定的参考价值。文章目录

篇首语:本文由编程笔记#小编为大家整理,主要介绍了CSS字体加密反反爬通用方法相关的知识,希望对你有一定的参考价值。



文章目录


    • 前言
    • 环境配置
      • 下载tesseract
      • 下载训练集

    • 识别代码
    • 效果演示
    • 58同城招聘



前言

对于CSS字体加密,我目前遇到了这几种情况:


  1. 字体字形坐标点与编码之间的对应关系不会随着多次请求而变化,例如:58同城房子出租
  2. 字体字形坐标点每次请求时,位置不固定,但是每个文字的打点数量一致,例如:猿人学第7题
  3. 字体的打点坐标点与打点数量随着每次请求都会发生变换,例如:58同城招聘

我们之所以认为1这个形状是数字一。是因为我们通过学习后才懂得,“哦!这个是 ‘1‘ 。”

所以,为了让电脑识别出文字,就可以依靠机器学习,啊,但是我不会。直接上手机器学习针对的是比较难识别的图像,例如:复杂的验证码。

对于有规则的字体,我们就可以借助OCR(光学字符识别)识别文字。

本文使用到就是**tesseract-ocr+简体中文训练集**

大致流程:

根据已有的字体文件,将这些字体绘制到图片上,再通过OCR识别这些字符。

注意:


  1. 字体越多,识别花费的时间就越长;
  2. 能通过字体文件规律解密的,则不建议使用这种方法;

环境配置

环境配置参考文章:
https://blog.csdn.net/u010454030/article/details/80515501


下载tesseract

tesseract-ocr-setup-3.05.02下载


下载训练集

中文训练集下载


识别代码

# -*- coding: utf-8 -*-
"""
Created on 2021/4/27 16:34
---------
@summary:
---------
@author: mkdir700
@email: mkdir700@gmail.com
"""

import base64
import numpy
import pytesseract
from fontTools.ttLib import TTFont
from PIL import Image, ImageDraw, ImageFont
def fontConvert(fontPath):
"""
解析字体文件
:param fontPath: 字体文件路径
:return: 编码和汉字的对应关系
"""

font = TTFont(fontPath)
codeList = font.getGlyphOrder()[1:]
# print(codeList)

# 创建画布
im = Image.new("RGB", (1800, 1000), (255, 255, 255))
dr = ImageDraw.Draw(im)

# 加载字体文件对象
font = ImageFont.truetype(fontPath, 40)

word_count = len(codeList)
if word_count >= 40:
lines = word_count // 40 # 文字排列的行数,在图片上分行展示
else:
lines = word_count
arrayList = numpy.array_split(codeList, lines)
# print(arrayList)

# 将字体文件中的文字绘制成图片
for t in range(lines):
newList = [i.replace("uni", "\\\\u") for i in arrayList[t]]
text = "".join(newList)
text = text.encode('utf-8').decode('unicode_escape')
dr.text((0, 50 * t), text, font=font, fill="#000000")

im.save("temp.jpg")
# im = Image.open("temp.jpg") #可以将图片保存到本地,以便于手动打开图片查看
result = pytesseract.image_to_string(im, lang="chi_sim")
result = result.replace(" ", "").replace("\\n", "")
codeList = [i.replace("uni", "&#x") for i in codeList]
return dict(zip(codeList, list(result)))
if __name__ == '__main__':
b = "xxxx="
content: bytes = base64.b64decode(b.encode())
with open('./1.ttf', 'wb') as f:
f.write(content)
print(fontConvert('./1.ttf'))


效果演示

站点:58同城

地址:https://bj.58.com/searchjob/

右键查看源代码可查看字体文件的base64编码


站点:大众点评

地址:http://www.dianping.com/shop/H7CLU1zL7C5X891z


推荐阅读
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • 本文档汇总了Python编程的基础与高级面试题目,涵盖语言特性、数据结构、算法以及Web开发等多个方面,旨在帮助开发者全面掌握Python核心知识。 ... [详细]
  • 深入浅出TensorFlow数据读写机制
    本文详细介绍TensorFlow中的数据读写操作,包括TFRecord文件的创建与读取,以及数据集(dataset)的相关概念和使用方法。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 本文详细介绍了如何在ECharts中使用线性渐变色,通过echarts.graphic.LinearGradient方法实现。文章不仅提供了完整的代码示例,还解释了各个参数的具体含义及其应用场景。 ... [详细]
  • 微软Exchange服务器遭遇2022年版“千年虫”漏洞
    微软Exchange服务器在新年伊始遭遇了一个类似于‘千年虫’的日期处理漏洞,导致邮件传输受阻。该问题主要影响配置了FIP-FS恶意软件引擎的Exchange 2016和2019版本。 ... [详细]
  • 本文提供了一系列Python编程基础练习题,涵盖了列表操作、循环结构、字符串处理和元组特性等内容。通过这些练习题,读者可以巩固对Python语言的理解并提升编程技能。 ... [详细]
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • CentOS 6.5 上安装 MySQL 5.7.23 的详细步骤
    本文详细介绍如何在 CentOS 6.5 系统上成功安装 MySQL 5.7.23,包括卸载旧版本、下载安装包、配置文件修改及启动服务等关键步骤。 ... [详细]
  • Python技巧:利用Cookie实现自动登录绕过验证码
    本文详细介绍了如何通过Python和Selenium库利用浏览器Cookie实现自动登录,从而绕过验证码验证。文章提供了具体的操作步骤,并附有代码示例,帮助读者理解和实践。 ... [详细]
  • 本文旨在探讨如何利用决策树算法实现对男女性别的分类。通过引入信息熵和信息增益的概念,结合具体的数据集,详细介绍了决策树的构建过程,并展示了其在实际应用中的效果。 ... [详细]
  • CentOS 7.6环境下Prometheus与Grafana的集成部署指南
    本文旨在提供一套详细的步骤,指导读者如何在CentOS 7.6操作系统上成功安装和配置Prometheus 2.17.1及Grafana 6.7.2-1,实现高效的数据监控与可视化。 ... [详细]
  • 实体映射最强工具类:MapStruct真香 ... [详细]
author-avatar
手机用户2502900175
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有